Service providers are able to provide numerous voice and data services to end users (also referred to as subscribers, user equipment, wireless devices, etc.). Examples of voice services are voice calls, call forwarding, call waiting, etc. Examples of data services are streaming audio, streaming video, Voice over Internet Protocol (VoIP), online gaming, IP-TV, etc. The data services are managed by a Packet-Switched (PS) core network, which interfaces the end user with one or more external Packet Data Networks (PDN), such as the Internet. When accessing data services, the sessions established by end users are typically much longer than traditional voice calls. For instance, a typical voice call may last ten minutes or less, while data sessions for surfing the Internet, watching IP-TV, playing online games, etc., may last for many hours or even days.
End users that are served by a PS core network may subscribe to offline charging. Offline charging refers to a charging method where charging information for network resource usage is collected concurrently with the resource usage. To implement offline charging, a Charging Trigger Function (CTF) is embedded in the network elements that serve a session. The CTF collects information on the usage of network resources by an end user for the session. The CTF then determines the occurrence of a chargeable event, and generates charging events based on the network resource usage. The CTF then reports the charging events to an Offline Charging System (OFCS) by sending accounting requests to the OFCS. One example of an accounting request is a Diameter Rf Accounting Request (ACR).
The OFCS includes one or more charging functions, such as Charging Data Functions (CDF), that build Charging Data Records (CDR) based on the charging information provided by the CTFs in the accounting requests. For example, when a network element first becomes involved in a session, the CTF in the network element generates an ACR[Start] and transmits the ACR[Start] to a CDF. After the session is established, the CTF periodically transmits one or more ACR[Interim] messages to the CDF. If the CTF detects that the session ends, then the CTF generates an ACR[Stop] and transmits the ACR[Stop] to the CDF.
When the CDF first receives the ACR[Start] from the CTF, the CDF opens a CDR for the session for that network element. The CDF then updates the open CDR when it receives an ACR[Interim] from the CTF based on the charging information in the ACR[Interim]. If the CDF receives an ACR[Stop] from the CTF, then the CDF closes the CDR for the session for that network element.
The CDF may also close a CDR for the session while the session is still active, which will result in a partial CDR. Such partial CDRs are created to capture changes in the session characteristics, such as inclusion of a new participant in an ad-hoc conference call, a change in QoS by a new offer-answer exchange involving a Service Data Point (SDP), a change in the CODEC being used for the session, etc. Assume, for example, that a CDF receives an ACR[Start] for a session from a CTF. The CDF instantiates a CDR, and initiates a time counter from a start timestamp indicated in the ACR[Start]. If the time counter exceeds the time limit trigger before an ACR[Stop] is received from the CTF, then the CDF can close the (partial) CDR while the session is still active. This CDR is marked as a partial CDR, with the reason for CDR closure noted as “time limit reached”. The CDF then opens a new CDR for the session. The charging function will continue to generate partial CDRs upon expiry of the time limit until an ACR[Stop] is received from the CTF for the session. Such parceling of partial session CDRs is considered very useful in sessions that last for hours or even days, since a timely production of the CDR allows an operator to realize revenue in an active billing cycle, rather than waiting for the session to terminate on its own, which may straddle a monthly billing cycle and thereby delay revenue recognition by a month or more.
If the CDF happens to encounter a failure and becomes unavailable to the CTF, then charging will fail over to a peer charging function (e.g., another CDF) in the OFCS. After failover, the CTF will begin sending accounting requests to a secondary charging function in the OFCS. However, when charging fails over to a secondary charging function, the secondary charging function may be out of sync with other charging functions that are also generating partial CDRs for the session (e.g., for other network elements that are serving the session). When charging functions close partial CDRs are different times, correlation of the CDRs subsequent to an aggregation of partial CDRs becomes impossible, as the timers get skewed to a larger extent than the tolerance band for correlation execution. This results in uncorrelated CDRs, which are often discarded by a billing mediation system, as they carry insufficient information.